// 350. 两个数组的交集 II
// 已解答
// 简单
// 相关标签
// 相关企业
// 给你两个整数数组 nums1 和 nums2 ，请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数，应与元素在两个数组中都出现的次数一致（如果出现次数不一致，则考虑取较小值）。可以不考虑输出结果的顺序。

// 示例 1：

// 输入：nums1 = [1,2,2,1], nums2 = [2,2]
// 输出：[2,2]
// 示例 2:

// 输入：nums1 = [4,9,5], nums2 = [9,4,9,8,4]
// 输出：[4,9]

// 提示：

// 1 <= nums1.length, nums2.length <= 1000
// 0 <= nums1[i], nums2[i] <= 1000

var intersection = function (nums1, nums2) {
  const map = new Map();
  for (const left of nums1) {
    map.set(left, (map.get(left) || 0) + 1);
  }
  let ans = [];
  for (const right of nums2) {
    const _right = map.get(right);
    if (_right > 0) {
      ans.push(right);
      map.set(right, (map.get(right) || 0) - 1);
    }
  }
  return ans;
};

const ans = intersection([1, 2, 2, 1, 3, 3, 3], [2, 2, 2, 1, 3]);
console.log("ans: ", ans);
